# -*- Makefile -*-

include $(LEVEL)/Makefile.config

# Include LLVM's Master Makefile config and rules.
include $(LLVM_OBJ_ROOT)/Makefile.config

ifeq ($(BYTECODE_LIBRARY), 1)
#
# Override make variables based on the runtime configuration. We want
# to override whatever the user may have said on the command line,
# hence the use of override.
#
override ENABLE_OPTIMIZED := $(RUNTIME_ENABLE_OPTIMIZED)
override DISABLE_ASSERTIONS := $(RUNTIME_DISABLE_ASSERTIONS)
override ENABLE_PROFILING := $(RUNTIME_ENABLE_PROFILING)
override ENABLE_COVERAGE := $(RUNTIME_ENABLE_COVERAGE)
endif

include $(LLVM_SRC_ROOT)/Makefile.rules

CC := $(LLVM_OBJ_ROOT)/Release+Asserts/bin/clang
CXX := $(LLVM_OBJ_ROOT)/Release+Asserts/bin/clang++
LLVMCC := $(CC)
LLVMCXX := $(CXX)


LD.Flags += -L$(PROJ_SRC_ROOT)/stp/lib \
            -L$(PROJ_SRC_ROOT)/../out/Default/lib.target \
            -Wl,--rpath=$(PROJ_SRC_ROOT)/../out/Default/lib.target

CXX.Flags += -DLLVM_23 -fexceptions -fno-omit-frame-pointer -DEXT_HASH_MAP
CXX.Flags += -I$(PROJ_SRC_ROOT)/stp/include -I$(PROJ_SRC_ROOT)/../third_party/boolector

PROTOC ?= protoc

ifeq ($(ENABLE_EXT_STP),1)
  LD.Flags += -L$(STP_ROOT)/lib
  CXX.Flags += -I$(STP_ROOT)/include
else
  LD.Flags += -L$(PROJ_SRC_ROOT)/stp/lib
  CXX.Flags += -I$(PROJ_SRC_ROOT)/stp/include
endif

CXX.Flags += -DKLEE_DIR=\"$(PROJ_OBJ_ROOT)\"

LD.Flags += -lrt -lz

%.pb.cc %.pb.h: %.proto
	$(PROTOC) --cpp_out=./ $<
